﻿package com.rbac.system.service;

import com.rbac.system.common.Result;
import com.rbac.system.vo.CaptchaVO;

/**
 * 验证码服务接口
 */
public interface CaptchaService {
    
    /**
     * 生成图片验证码
     * @return 验证码信息
     */
    Result<CaptchaVO> generateImageCaptcha();
    
    /**
     * 生成数学运算验证码
     * @return 验证码信息
     */
    Result<CaptchaVO> generateMathCaptcha();
    
    /**
     * 生成滑块验证码
     * @return 验证码信息
     */
    Result<CaptchaVO> generateSliderCaptcha();
    
    /**
     * 验证验证码
     * @param captchaId 验证码ID
     * @param userInput 用户输入
     * @return 验证结果
     */
    Result<Void> verifyCaptcha(String captchaId, String userInput);
    
    /**
     * 验证滑块验证码
     * @param captchaId 验证码ID
     * @param x 滑块位置
     * @return 验证结果
     */
    Result<Void> verifySliderCaptcha(String captchaId, Integer x);
    
    /**
     * 清除验证码
     * @param captchaId 验证码ID
     */
    void clearCaptcha(String captchaId);
    
    /**
     * 检查是否需要验证码
     * @param type 类型：login-登录，register-注册
     * @return 是否需要验证码
     */
    boolean isCaptchaRequired(String type);
    
    /**
     * 获取验证码类型
     * @return 验证码类型
     */
    String getCaptchaType();
}


